home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / Ant Movie Catalog 3.5.0.2 / amc_install.exe / {app} / Scripts / Kinoafisha (RU).ifs < prev    next >
Text File  |  2005-03-16  |  13KB  |  357 lines

  1. (***************************************************
  2.  
  3. Ant Movie Catalog importation script
  4. www.antp.be/software/moviecatalog/
  5.  
  6. [Infos]
  7. Authors=Karamov Ilshat aka KAA (kaa2@pisem.net)
  8. Title=Kinoafisha (RU)
  9. Description=Import from www.kinoafisha.ru
  10. Site=www.kinoafisha.ru
  11. Language=RU
  12. Version=1.0
  13. Requires=3.5.0
  14. Comments=─ε±≥≤∩ Ω ε∩Φ±αφΦ ∞ ⌠Φδⁿ∞εΓ, ≡ατ∞σ∙σφφ√⌡ φα ±αΘ≥σ www.kinoafisha.ru
  15. License=This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
  16. GetInfo=1
  17.  
  18. [Options]
  19.  
  20. ***************************************************)
  21.  
  22. program Kinoafisha_ru;
  23.  
  24. const
  25.   BaseAddress = 'http://www.kinoafisha.ru/';
  26.  
  27. var
  28.   MovieName: string;
  29.  
  30. //==============================================================================
  31.   procedure AnalyzePage(Address: string);
  32.   var
  33.     Page: TStringList;
  34.     BeginPos, EndPos: Integer;
  35.     AddressText, HTMLText : string;
  36.   begin
  37.   Page := TStringList.Create;
  38.   Page.Text := GetPage(Address);
  39.   HTMLText := Page.Text;
  40.  
  41.   PickTreeClear;
  42.   PickTreeAdd('─ε±≥≤∩φ√σ ⌠Φδⁿ∞√', '');
  43.  
  44.   if Pos('╨στ≤δⁿ≥α≥√ ∩εΦ±Ωα φα KinoAfisha.ru', HTMLText) <> 0 then
  45.   begin
  46.     BeginPos := Pos('═αΘΣσφ√ ⌠Φδⁿ∞√:</b></td></tr>', HTMLText)+Length('═αΘΣσφ√ ⌠Φδⁿ∞√:</b></td></tr>');
  47.     if BeginPos=0 then
  48.        BeginPos := Pos('═αΘΣσφ√ ⌠Φδⁿ∞√:</td></tr>', HTMLText)+Length('═αΘΣσφ√ ⌠Φδⁿ∞√:</td></tr>');
  49.     HTMLText := Copy(HTMLText, BeginPos, Length(HTMLText));
  50.     EndPos :=  Pos(' </TABLE>', HTMLText);
  51.     HTMLText := Copy(HTMLText, 0, EndPos);
  52.     Page.Text:=Trim(HTMLText);
  53.  
  54.     AddMoviesTitles(Page);
  55.     if PickTreeExec(AddressText) then
  56.     begin
  57.       Page.Text := GetPage(AddressText);
  58.       // URL
  59.       if CanSetField(fieldURL) then
  60.         SetField(fieldURL, AddressText);
  61.       AnalyzeVideoPage(Page);
  62.     end;
  63.   end
  64.   else
  65.   begin
  66.     if Pos('╚τΓΦφΦ≥σ, φΦ≈σπε φσ φαΘΣσφε', HTMLText) = 0 then
  67.     begin
  68.       // ═αΦ∞σφεΓαφΦσ
  69.       BeginPos := Pos('<title>', HTMLText)+Length('<title>');
  70.       EndPos := Pos(' - ╩Φφεα⌠Φ°α ╨≤', HTMLText);
  71.       MovieName := Copy(HTMLText, BeginPos, EndPos-BeginPos);
  72.       PickTreeAdd(MovieName, Address);
  73.       if PickTreeExec(AddressText) then
  74.       begin
  75.         // URL
  76.         if CanSetField(fieldURL) then
  77.           SetField(fieldURL, Address);
  78.         Page.Text := HTMLText;
  79.         AnalyzeVideoPage(Page);
  80.       end;
  81.     end;
  82.   end;
  83.  
  84.   Page.Free;
  85. end;
  86.  
  87.  
  88. //==============================================================================
  89.   procedure AddMoviesTitles(Page: TStringList);
  90.   var
  91.     i: integer;
  92.     Line: string;
  93.     MovieTitle, MovieAddress: string;
  94.     StartPos, EndPos: Integer;
  95.   begin
  96.     for  i:=0  to Page.Count-1 do
  97.     begin
  98.       Line := Page.GetString(i);
  99.       if Line='' then
  100.         Continue;
  101.       StartPos := Pos('<a href="', Line)+Length('<a href="');
  102.       Line := Copy(Line, StartPos, Length(Line));
  103.       EndPos := Pos('">', Line);
  104.       MovieAddress := BaseAddress+Copy(Line, 0, EndPos-1);
  105.       StartPos := Pos('">', Line);
  106.       EndPos := Pos('</td></tr>', Line);
  107.       MovieTitle := Copy(Line, StartPos+Length('">'), EndPos);
  108.       HTMLRemoveTags(MovieTitle);
  109.       PickTreeAdd(MovieTitle, MovieAddress);
  110.     end;
  111.   end;
  112.  
  113. //==============================================================================
  114.   procedure AnalyzeVideoPage(Page: TStringList);
  115.   var
  116.     HTMLText, HTMLText1: string;
  117.     BeginPos, EndPos: Integer;
  118.     MovieName, MovieNameTrans, MovieNameOrig, MovieDirector,
  119.                MovieYear, MovieCategory, MovieRating,
  120.                MoviePictureAddress, MovieLength, MovieCountry,
  121.                MovieDescription, MovieActors, MovieProducer,
  122.                MovieComments: string;
  123.   begin
  124.   HTMLText:=Page.Text;
  125.   if Pos('╩Φφεα⌠Φ°α ╨≤', HTMLText) = 0 then
  126.      exit;
  127.  
  128.   // ═αΦ∞σφεΓαφΦσ
  129.   BeginPos := Pos('<title>', HTMLText)+Length('<title>');
  130.   EndPos := Pos(' - ╩Φφεα⌠Φ°α ╨≤', HTMLText);
  131.   MovieName := Copy(HTMLText, BeginPos, EndPos-BeginPos);
  132.   EndPos := Pos(' - ', MovieName);
  133.   MovieNameTrans := Copy(MovieName, 0, EndPos);
  134.   BeginPos := Pos(' - ', MovieName)+Length(' - ');
  135.   MovieNameOrig := Copy(MovieName, BeginPos, Length(MovieName));
  136.   
  137.   if CanSetField(fieldTranslatedTitle) then
  138.     SetField(fieldTranslatedTitle, MovieNameTrans);
  139.  
  140.   // ╬≡ΦπΦφαδⁿφεσ φαΦ∞σφεΓαφΦσ
  141.   if CanSetField(fieldOriginalTitle) then
  142.      SetField(fieldOriginalTitle, MovieNameOrig);
  143.  
  144.   // ╨σµΦ±±σ≡√
  145.   if CanSetField(fieldDirector) then
  146.     begin
  147.     if Pos('<b>╨σµΦ±±σ≡</b><br><a', HTMLText) <> 0 then
  148.       begin
  149.         BeginPos := Pos('<b>╨σµΦ±±σ≡</b><br><a', HTMLText)+Length('<b>╨σµΦ±±σ≡</b><br><a');
  150.         HTMLText1:=Copy(HTMLText, BeginPos, Length(HTMLText));
  151.         BeginPos := Pos('>', HTMLText1)+Length('>');
  152.         EndPos := Pos('</a></td></tr></table><br>', HTMLText1);
  153.         MovieDirector := Copy(HTMLText1, BeginPos, EndPos-BeginPos);
  154.  
  155.         HTMLRemoveTags(MovieDirector);
  156.         MovieDirector:=Trim(MovieDirector);
  157.         SetField(fieldDirector, Trim(MovieDirector));
  158.       end
  159.       else
  160.       begin
  161.         if Pos('╨σµΦ±±╕≡:', HTMLText) <> 0 then
  162.           begin
  163.             BeginPos := Pos('╨σµΦ±±╕≡:', HTMLText)+Length('╨σµΦ±±╕≡:');
  164.             HTMLText1:=Copy(HTMLText, BeginPos, Length(HTMLText));
  165.             EndPos := Pos('.', HTMLText1);
  166.             MovieDirector := Trim(Copy(HTMLText1, 0, EndPos-1));
  167.             HTMLRemoveTags(MovieDirector);
  168.             SetField(fieldDirector, MovieDirector);
  169.           end
  170.         if Pos('╨σµΦ±±σ≡:', HTMLText) <> 0 then
  171.           begin
  172.             BeginPos := Pos('╨σµΦ±±σ≡:', HTMLText)+Length('╨σµΦ±±σ≡:');
  173.             HTMLText1:=Copy(HTMLText, BeginPos, Length(HTMLText));
  174.             EndPos := Pos('.', HTMLText1);
  175.             MovieDirector := Trim(Copy(HTMLText1, 0, EndPos-1));
  176.             HTMLRemoveTags(MovieDirector);
  177.             SetField(fieldDirector, MovieDirector);
  178.           end
  179.       end;
  180.     end;
  181.  
  182.   // ├εΣ
  183.   if CanSetField(fieldYear) then
  184.     begin
  185.     if Pos('(<span class="year">', HTMLText) <> 0 then
  186.       begin
  187.         BeginPos := Pos('(<span class="year">', HTMLText)+Length('(<span class="year">');
  188.         HTMLText1:=Copy(HTMLText, BeginPos, Length(HTMLText));
  189.         EndPos := Pos('</span>)', HTMLText1);
  190.         MovieYear := Copy(HTMLText1, 0, EndPos-1);
  191.         SetField(fieldYear, MovieYear);
  192.       end;
  193.     end;
  194.  
  195.   // ╞αφ≡
  196.   if CanSetField(fieldCategory) then
  197.     begin
  198.     if Pos('╞αφ≡:</b> <font color="#0000df">', HTMLText) <> 0 then
  199.       begin
  200.         BeginPos := Pos('╞αφ≡:</b> <font color="#0000df">', HTMLText)+Length('╞αφ≡:</b> <font color="#0000df">');
  201.         HTMLText1:=Copy(HTMLText, BeginPos, Length(HTMLText));
  202.         EndPos := Pos('</font>', HTMLText1);
  203.         MovieCategory := Copy(HTMLText1, 0, EndPos-1);
  204.         SetField(fieldCategory, MovieCategory);
  205.       end;
  206.     end;
  207.  
  208.    // ╨σΘ≥Φφπ
  209.   if CanSetField(fieldRating) then
  210.     begin
  211.     if Pos('<b>═α° ≡σΘ≥Φφπ:</b>', HTMLText) <> 0 then
  212.       begin
  213.         BeginPos := Pos('<b>═α° ≡σΘ≥Φφπ:</b>', HTMLText)+Length('<b>═α° ≡σΘ≥Φφπ:</b>');
  214.         HTMLText1:=Copy(HTMLText, BeginPos, Length(HTMLText));
  215.         BeginPos := Pos('<b>', HTMLText1)+Length('<b>');
  216.         EndPos := Pos('</b>', HTMLText1);
  217.         MovieRating := Copy(HTMLText1, BeginPos, EndPos-BeginPos);
  218.         SetField(fieldRating, MovieRating);
  219.       end;
  220.     end;
  221.  
  222.    // ╧≡εΣεδµΦ≥σδⁿφε±≥ⁿ
  223.   if CanSetField(fieldLength) then
  224.     begin
  225.     if Pos('<b>╧≡εΣεδµΦ≥σδⁿφε±≥ⁿ:</b>', HTMLText) <> 0 then
  226.       begin
  227.         BeginPos := Pos('<b>╧≡εΣεδµΦ≥σδⁿφε±≥ⁿ:</b>', HTMLText)+Length('<b>╧≡εΣεδµΦ≥σδⁿφε±≥ⁿ:</b>');
  228.         HTMLText1:=Copy(HTMLText, BeginPos, Length(HTMLText));
  229.         EndPos := Pos('∞Φφ≤≥<br>', HTMLText1);
  230.         MovieLength := Trim(Copy(HTMLText1, 0, EndPos-1));
  231.         SetField(fieldLength, MovieLength);
  232.       end;
  233.     end;
  234.     
  235.    // ╤≥≡αφα
  236.   if CanSetField(fieldCountry) then
  237.     begin
  238.     if Pos('<b>╤≥≡αφα:</b>', HTMLText) <> 0 then
  239.       begin
  240.         BeginPos := Pos('<b>╤≥≡αφα:</b>', HTMLText)+Length('<b>╤≥≡αφα:</b>');
  241.         HTMLText1:=Copy(HTMLText, BeginPos, Length(HTMLText));
  242.         EndPos := Pos('<br>', HTMLText1);
  243.         MovieCountry := Trim(Copy(HTMLText1, 0, EndPos-1));
  244.         SetField(fieldCountry, MovieCountry);
  245.       end;
  246.     end;
  247.     
  248.    // ╘αß≤δα
  249.   if CanSetField(fieldDescription) then
  250.     begin
  251.     if Pos('<b>╘αß≤δα:</b>', HTMLText) <> 0 then
  252.       begin
  253.         BeginPos := Pos('<b>╘αß≤δα:</b>', HTMLText)+Length('<b>╘αß≤δα:</b>');
  254.         HTMLText1:=Copy(HTMLText, BeginPos, Length(HTMLText));
  255.         EndPos := Pos('<br>', HTMLText1);
  256.         MovieDescription := Trim(Copy(HTMLText1, 0, EndPos-1));
  257.         SetField(fieldDescription, MovieDescription);
  258.       end;
  259.     end;
  260.  
  261.    // └Ω≥σ≡√
  262.   if CanSetField(fieldActors) then
  263.     begin
  264.     if Pos('┬ ≡εδ ⌡:', HTMLText) <> 0 then
  265.       begin
  266.         BeginPos := Pos('┬ ≡εδ ⌡:', HTMLText)+Length('┬ ≡εδ ⌡:');
  267.         HTMLText1:=Copy(HTMLText, BeginPos, Length(HTMLText));
  268.         EndPos := Pos('.', HTMLText1);
  269.         MovieActors := Trim(Copy(HTMLText1, 0, EndPos-1));
  270.         SetField(fieldActors, MovieActors);
  271.       end
  272.       else
  273.       begin
  274.         if Pos('<b>╟ΓστΣ√:</b>', HTMLText) <> 0 then
  275.           begin
  276.             BeginPos := Pos('<b>╟ΓστΣ√:</b>', HTMLText)+Length('<b>╟ΓστΣ√:</b>');
  277.             HTMLText1:=Copy(HTMLText, BeginPos, Length(HTMLText));
  278.             EndPos := Pos('<br>', HTMLText1);
  279.             MovieActors := Trim(Copy(HTMLText1, 0, EndPos-1));
  280.             HTMLRemoveTags(MovieActors);
  281.             SetField(fieldActors, MovieActors);
  282.           end
  283.       end;
  284.     end;
  285.  
  286.    // ╧≡εΣ■±σ≡√
  287.   if CanSetField(fieldProducer) then
  288.     begin
  289.     if Pos('╧≡εΣ■±σ≡:', HTMLText) <> 0 then
  290.       begin
  291.         BeginPos := Pos('╧≡εΣ■±σ≡:', HTMLText)+Length('╧≡εΣ■±σ≡:');
  292.         HTMLText1:=Copy(HTMLText, BeginPos, Length(HTMLText));
  293.         EndPos := Pos('.', HTMLText1);
  294.         MovieProducer := Trim(Copy(HTMLText1, 0, EndPos-1));
  295.         SetField(fieldProducer, MovieProducer);
  296.       end
  297.       else
  298.       begin
  299.         if Pos('╧≡εΣ■±σ≡√:', HTMLText) <> 0 then
  300.           begin
  301.             BeginPos := Pos('╧≡εΣ■±σ≡√:', HTMLText)+Length('╧≡εΣ■±σ≡√:');
  302.             HTMLText1:=Copy(HTMLText, BeginPos, Length(HTMLText));
  303.             EndPos := Pos('.', HTMLText1);
  304.             MovieProducer := Trim(Copy(HTMLText1, 0, EndPos-1));
  305.             SetField(fieldProducer, MovieProducer);
  306.           end
  307.       end;
  308.     end;
  309.  
  310.    // ╩ε∞σφ≥α≡ΦΘ
  311.   if CanSetField(fieldComments) then
  312.     begin
  313.     if Pos('<b>╨σ÷σφτΦ ', HTMLText) <> 0 then
  314.       begin
  315.         BeginPos := Pos('<b>╨σ÷σφτΦ ', HTMLText);//+Length('<b>╨σ÷σφτΦ ');
  316.         HTMLText1:=Copy(HTMLText, BeginPos, Length(HTMLText));
  317.         EndPos := Pos('<table', HTMLText1);
  318.         MovieComments := Trim(Copy(HTMLText1, 0, EndPos-1));
  319.         HTMLRemoveTags(MovieComments);
  320.         SetField(fieldComments, MovieComments);
  321.       end;
  322.     end;
  323.  
  324.   // ╩α≡≥ΦφΩα
  325.   if CanSetPicture then
  326.     begin
  327.     if Pos('poster.jpg', HTMLText) <> 0 then
  328.       begin
  329.         BeginPos := Pos('filmname', HTMLText)+Length('filmname');
  330.         HTMLText1:=Copy(HTMLText, BeginPos, Length(HTMLText));
  331.         BeginPos := Pos('><tr><td><a href="', HTMLText1)+Length('><tr><td><a href="');
  332.         EndPos := Pos('"><img', HTMLText1);
  333.         MoviePictureAddress := Copy(HTMLText1, BeginPos, EndPos-BeginPos);
  334.         GetPicture(MoviePictureAddress);
  335.       end;
  336.     end;
  337.   //DisplayResults;
  338. end;
  339.  
  340. //==============================================================================
  341. //==============================================================================
  342. //==============================================================================
  343. begin
  344.   if CheckVersion(3,5,0) then
  345.   begin
  346.     MovieName := GetField(fieldTranslatedTitle);
  347.     if MovieName = '' then
  348.       MovieName := GetField(fieldOriginalTitle);
  349.  
  350.     if Input('Import from Kinoafisha.ru', 'Enter the title of the movie:', MovieName) then
  351.     begin
  352.       AnalyzePage('http://www.kinoafisha.ru/search.php3?find=all&search='+UrlEncode(MovieName));
  353.     end;
  354.   end else
  355.     ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.5.0)');
  356. end.
  357.